package ma.moliere.presentation.modele;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

import ma.moliere.transverse.vo.AbsenceAffiche;
import ma.moliere.transverse.vo.CritereEleve;
import ma.moliere.transverse.vo.EleveAffiche;
import ma.moliere.transverse.vo.Mensualite;
import ma.moliere.transverse.vo.ReglementAffiche;

/**
 * Modele général: bean qui regroupe les propriétés communes.
 * 
 * @author SASMAMI
 * 
 */
public class ModeleGeneral implements Serializable {

	/**
	 * Serial version ID.
	 */
	private static final long serialVersionUID = 7862339568609449455L;

	/** Eleve courant encour de traitement. */
	private EleveAffiche eleve;

	/** matricule de l'eleve courant encour de traitement. */
	private String matricule;

	/** Critère de recherche des élèves. */
	private CritereEleve critere;

	/** La liste des élèves encours de traitement. */
	private List < EleveAffiche > eleves;

	/** la liste des années scolaires. */
	private List < SelectItem > annesScolairesItems;

	/** la liste des années classes. */
	private List < SelectItem > classesItems;

	/** Id de la classe courante. */
	private Long idClasse;

	/** Libelle du groupe. */
	private String groupe;

	/** Libelle de l'année. */
	private String anneescolaire;

	/** Mode de paiement: espece ou cheque. */
	private String modePaiement;

	/** Montant du cheque. */
	private Double montantcheque;

	/** numero du cheque. */
	private String numerocheque;

	/** La banque. */
	private String banque;

	/** proprietaire du cheque. */
	private String proprietairecheque;

	/** montant total à regler. */
	private Double montanttotal;

	private Boolean affichePanelCheque;
	private List < ReglementAffiche > reglementsAffiches;
	private List < Mensualite > mensualites;
	private List < Long > idsreglementvalides;
	private List < AbsenceAffiche > absences;
	private AbsenceAffiche absence;
	private Boolean afficherAutre;
	private Boolean modificationFlag;
	private Boolean regFlag;

	private Long idAnneeScolaire;

	/**
	 * @return the eleve
	 */
	public EleveAffiche getEleve() {
		if (null == eleve) {
			eleve = new EleveAffiche();
		}
		return eleve;
	}

	/**
	 * @param eleve
	 *            the eleve to set
	 */
	public void setEleve(final EleveAffiche eleve) {
		this.eleve = eleve;
	}

	public CritereEleve getCritere() {
		if (null == critere) {
			critere = new CritereEleve();
		}
		return critere;
	}

	public void setCritere(final CritereEleve critere) {
		this.critere = critere;
	}

	public List < EleveAffiche > getEleves() {
		if (null == eleves) {
			eleves = new ArrayList < EleveAffiche >();
		}
		return eleves;
	}

	/**
	 * @param eleves
	 */
	public void setEleves(final List < EleveAffiche > eleves) {
		this.eleves = eleves;
	}

	public List < SelectItem > getAnnesScolairesItems() {
		if (null == annesScolairesItems) {
			annesScolairesItems = new ArrayList < SelectItem >();
		}
		return annesScolairesItems;
	}

	public void setAnnesScolairesItems(final List < SelectItem > annesScolairesItems) {
		this.annesScolairesItems = annesScolairesItems;
	}

	public Long getIdClasse() {
		return idClasse;
	}

	public void setIdClasse(final Long idClasse) {
		this.idClasse = idClasse;
	}

	public String getGroupe() {
		return groupe;
	}

	public void setGroupe(final String groupe) {
		this.groupe = groupe;
	}

	public List < SelectItem > getClassesItems() {
		if (null == classesItems) {
			classesItems = new ArrayList < SelectItem >();
		}
		return classesItems;
	}

	public void setClassesItems(final List < SelectItem > classesItems) {
		this.classesItems = classesItems;
	}

	public String getAnneescolaire() {
		return anneescolaire;
	}

	public void setAnneescolaire(final String anneescolaire) {
		this.anneescolaire = anneescolaire;
	}

	public String getModePaiement() {
		return modePaiement;
	}

	public void setModePaiement(final String modePaiement) {
		this.modePaiement = modePaiement;
	}

	public Double getMontantcheque() {
		return montantcheque;
	}

	public void setMontantcheque(final Double montantcheque) {
		this.montantcheque = montantcheque;
	}

	public String getNumerocheque() {
		return numerocheque;
	}

	public void setNumerocheque(final String numerocheque) {
		this.numerocheque = numerocheque;
	}

	public String getBanque() {
		return banque;
	}

	public void setBanque(final String banque) {
		this.banque = banque;
	}

	public String getProprietairecheque() {
		return proprietairecheque;
	}

	public void setProprietairecheque(final String proprietairecheque) {
		this.proprietairecheque = proprietairecheque;
	}

	public Boolean getAffichePanelCheque() {
		return affichePanelCheque;
	}

	public void setAffichePanelCheque(final Boolean affichePanelCheque) {
		this.affichePanelCheque = affichePanelCheque;
	}

	public List < ReglementAffiche > getReglementsAffiches() {
		if (null == reglementsAffiches) {
			reglementsAffiches = new ArrayList < ReglementAffiche >();
		}
		return reglementsAffiches;
	}

	public void setReglementsAffiches(final List < ReglementAffiche > reglementsAffiches) {
		this.reglementsAffiches = reglementsAffiches;
	}

	public List < Mensualite > getMensualites() {
		if (null == mensualites) {
			mensualites = new ArrayList < Mensualite >();
		}
		return mensualites;
	}

	public void setMensualites(final List < Mensualite > mensualites) {
		this.mensualites = mensualites;
	}

	public List < Long > getIdsreglementvalides() {
		if (null == idsreglementvalides) {
			idsreglementvalides = new ArrayList < Long >();
		}
		return idsreglementvalides;
	}

	public void setIdsreglementvalides(final List < Long > idsreglementvalides) {
		this.idsreglementvalides = idsreglementvalides;
	}

	public List < AbsenceAffiche > getAbsences() {
		if (absences == null) {
			absences = new ArrayList < AbsenceAffiche >();
		}
		return absences;
	}

	/**
	 * @param absences
	 *            the absences to set
	 */
	public void setAbsences(final List < AbsenceAffiche > absences) {
		this.absences = absences;
	}

	/**
	 * @return the absence
	 */
	public AbsenceAffiche getAbsence() {
		if (null == absence) {
			absence = new AbsenceAffiche();
		}
		return absence;
	}

	/**
	 * @param absence
	 *            the absence to set
	 */
	public void setAbsence(final AbsenceAffiche absence) {
		this.absence = absence;
	}

	/**
	 * @return the afficherAutre
	 */
	public Boolean getAfficherAutre() {
		return afficherAutre;
	}

	/**
	 * @param afficherAutre
	 *            the afficherAutre to set
	 */
	public void setAfficherAutre(final Boolean afficherAutre) {
		this.afficherAutre = afficherAutre;
	}

	public Boolean getModificationFlag() {
		return modificationFlag;
	}

	public void setModificationFlag(final Boolean modificationFlag) {
		this.modificationFlag = modificationFlag;
	}

	/**
	 * Accesseur en lecture pour l'attribut regFlag.
	 */
	public Boolean getRegFlag() {
		return regFlag;
	}

	/**
	 * Accesseur en ecriture pour l'attribut regFlag
	 */
	public void setRegFlag(final Boolean regFlag) {
		this.regFlag = regFlag;
	}

	/**
	 * Accesseur en lecture pour l'attribut matricule.
	 */
	public String getMatricule() {
		return matricule;
	}

	/**
	 * Accesseur en ecriture pour l'attribut matricule
	 */
	public void setMatricule(final String matricule) {
		this.matricule = matricule;
	}

	/**
	 * Accesseur en lecture pour l'attribut montanttotal.
	 */
	public Double getMontanttotal() {
		return montanttotal;
	}

	/**
	 * Accesseur en ecriture pour l'attribut montanttotal
	 */
	public void setMontanttotal(final Double montanttotal) {
		this.montanttotal = montanttotal;
	}

	/**
	 * Accesseur en lecture pour l'attribut idAnneescolaire.
	 */
	public Long getIdAnneeScolaire() {
		return idAnneeScolaire;
	}

	/**
	 * Accesseur en ecriture pour l'attribut idAnneescolaire
	 */
	public void setIdAnneeScolaire(final Long idAnneeScolaire) {
		this.idAnneeScolaire = idAnneeScolaire;
	}

}
